package cn.com.bluemoon.daps.sync.core.sync.sql.mysql.datatype.string;

import cn.com.bluemoon.daps.sync.core.sync.sql.mysql.datatype.DataType;
import com.google.common.collect.ImmutableSet;

import java.util.Set;

/**
 * @author Jarod.Kong
 * @date 2021/7/22 11:28
 */
public class BinaryStringDataType implements DataType {
    /**
     * 默认值处理
     * 是否加单引号 等
     * <pre>
     *     CREATE TABLE t4 (uid BINARY(16) DEFAULT (UUID_TO_BIN(UUID())));
     * </pre>
     *
     * @param defaultValue source
     * @return target
     */
    @Override
    public Object cast(Object defaultValue) {
        if (defaultValue == null) {
            return null;
        }
        boolean isFunction = isFunction(defaultValue.toString());
        return isFunction ? defaultValue : wrapper(defaultValue, SINGLE_QUOTE);
    }

    /**
     * @return 名称
     */
    @Override
    public Set<String> name() {
        return ImmutableSet.of("binary", "varbinary");
    }
}
